<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    <textarea id="txt1"></textarea>
    <input type="button" id="btn" value="发送">
    <textarea id="txt2"></textarea>
</body>
<script>

    // 敏感词过滤
    var txt1 = document.getElementById("txt1")
    var txt2 = document.getElementById("txt2")
    var btn = document.getElementById("btn")
    
    // 准备敏感词库
    var arr = ["你好", "哈哈", "abc", "@"];

    btn.onclick = function(){
        var str = txt1.value;
        // 因为replace每次只能替换一次一个敏感词
        // 假设整个字符都是敏感词，一个敏感词要替换字符的长度次
        for(var i=0;i<str.length;i++){
            // 拿到并替换多个敏感词
            arr.forEach(function(val){
                // 因为字符的方法都不会修改原字符，所以替换之后要覆盖原字符
                str = str.replace(val, "***")
            })
        }
        // 显示结果
        txt2.value = str;
    }


    // =============

    // 3. 封装函数 将指定格式的字符串转成指定格式的对象 返回
    //     - "username=admin&password=123&tel=12345678901"
    //     - { username:"admin", password:123, tel:12345678901 }
    
    function parse(str){
        // 创建对象容器
        var obj = {};
        // 第一个按照指定字符分割字符，分割出来的是每组数据
        var arr = str.split("&")
        // 遍历分割之后的数据，拿到每组数据
        arr.forEach(function(val){
            // 再次分割出当前这一组数据的名字和值
            var a = val.split("=")
            // 名字作为对象的键，值作为当前键对应的值
            obj[a[0]] = a[1];
        })
        return obj;
    }
    // var str = "username=admin&password=123&tel=12345678901";
    // var str = "abc=123&qwe=456&hello=world";
    // var obj = parse(str);
    // console.log(obj);


    // 4. 封装函数 将对象转成指定格式的字符串 返回
    //     - { username:"admin", password:123, tel:12345678901 }
    //     - "username=admin&password=123&tel=12345678901"

    function stringify(obj){
        var str = "";
        // 遍历对象，拿到每个键和值
        for(var i in obj){
            // 按照要求的格式拼接成字符串
            str += i + "=" + obj[i] + "&";
        }
        // 最后去除多余的符号，并返回最终数据
        return str.slice(0, -1);
    }
    // var obj = { username:"admin", password:123, tel:12345678901 };
    // var obj = { a:10,b:20,c:30 };
    // var str = stringify(obj);
    // console.log(str)


    // 5. 封装函数 判断指定字符串是否是回文字符串，返回布尔值
    //     - "hellolleh"
    //     - "worlddlrow"
    //     - 不是："helloelloh"

    
    
    // 回文的规则：第0位和length-1相等，第1位和length-2相等，...

    // 比较公式：
    // i ~ length-i-1

    // 节省性能：回文字符串左右对称，只需要遍历一半即可

    function fn(str){
        for(var i=0;i<str.length/2;i++){
            if(str[i] !== str[str.length-i-1]){
                return false;
            }
        }
        return true;
    }
    // var str = "worlddlrow";
    // var str = "hellolleh";
    // var str = "helloelloh";
    // var res = fn(str);
    // console.log(res);


    
</script>
</html>